package com.atiguigu.rabbitmq.one;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Consumer {
    //队列名称
    public static  final String QUEUE_NAME="hello";
    public static void main(String[] args) throws IOException, TimeoutException {
        //连接工厂
        ConnectionFactory factory=new ConnectionFactory();
        //工厂IP 连接RabbitMQ队列
        factory.setHost("127.0.0.1");
        //用户名
        factory.setUsername("guest");
        factory.setPassword("guest");
        //创建连接
        Connection connection = factory.newConnection();
        //获取信道
        Channel channel = connection.createChannel();
        /*
         * 生成队列
         * 参数：队列名
         *      队列里面的消息是否持久化（默认保存在内存中不持久化）
         *     该队列是否只供一个消费者消费，是否消息共享、true表示多个消费者消费
         *     是否自动删除，最后一个消费者断开连接后，队列是否自动删除
         *     其他参数
         * */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        //声明  接收消息回调
        DeliverCallback deliverCallback=(consumerTag,message) ->{
            System.out.println(new String(message.getBody()));
        };
        //取消消息的回调
        CancelCallback callback=consumerTag ->{
            System.out.println("消费消息被中断");
        } ;
        /*
         * 接受一个消息
         * 参数：消费那个队列
         *     消费成功后是否自动应答 true代表自动应答
         *     消费未成功，消费的回调
         *     消费者取消消费的回调
         * */
         channel.basicConsume(QUEUE_NAME,true,deliverCallback,callback);
       
    }
}
